home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / SoundAndMusic / cmix / lib / resonz.c < prev    next >
C/C++ Source or Header  |  1989-02-25  |  664b  |  39 lines

  1. #include "../H/ugens.h"
  2.  
  3. rszset(cf,bw,xinit,a)
  4. float cf,bw,xinit,*a;
  5. {
  6.       double exp(),cos();
  7.       int i;
  8.       a[0]=exp(-PI*bw/SR);
  9.       a[1]=1.-a[0];
  10.       a[2]=2.*a[0]*cos(2.*PI*cf/SR);
  11.       a[3] = -a[0]*a[0];
  12.       if(!xinit) for(i=4; i<9; i++) a[i]=0.;
  13. }
  14. float resonz(sig,a)
  15. float sig,*a;
  16. {
  17.       float z;
  18.       z=a[1]*(sig-a[0]*a[4])+a[2]*a[5]+a[3]*a[6];
  19.       a[4]=a[8];
  20.       a[8]=sig;
  21.       a[6]=a[5];
  22.       a[5]=z;
  23.       return(z);
  24. }
  25.  
  26. float bresonz(sig,a,out,count)
  27. float *sig,*a,*out;
  28. {
  29.     float z;
  30.     int i;
  31.     for(i=0; i<count; i++) {
  32.         z=a[1]*(sig[i]-a[0]*a[4])+a[2]*a[5]+a[3]*a[6];
  33.         a[4]=a[8];
  34.         a[8]=sig[i];
  35.         a[6]=a[5];
  36.         out[i] = a[5] = z;
  37.     }
  38. }
  39.